Demystifying Python's Internals: Diving into CPython by implementing a pipe operator
TODO:GitHubの機能で差分を見たい
1 |> doubleと書けるようにする
doubleは2倍する関数
double(1)と同じ
新たな2項演算子を追加!(教育目的)
1 |> double |> doubleは4
30分でCPythonにどう新しい演算子を追加するかが分かる
|>という二項演算子を追加する
CPythonの開発で必要な要素をほぼカバーしていると思われる
変更したあとどう反映すればいいかも分かる
CPythonで編集した箇所
Part 1. from source code to AST
Grammar/Tokens
make regen-token
Python.gram
astをregenrateしたあとに make regen-pegen
Parser/Python.asdl
make regen-ast
Part 2. from AST to magic (execution)
Lib/opcode.py
make regen-opcode
Python/compile.c
Python/ceval.c
make -j2
上手く動かない際は make clean
https://youtu.be/P7vboWN8eqY